package com.silence.gmall.enums;

import com.silence.gmall.base.Code;
import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * @Author silence
 * @Email 792245022@qq.com
 * @Date 2025-06-11 14:50
 * @Description 共通代码
 */
@Getter
@AllArgsConstructor
public enum CommonCode implements Code {

    /**
     * 成功
     */
    // SUCCESS(1000_0000, "成功"),

    /**
     * 系统错误
     */
    ERROR( 9999_9999, "系统错误"),

    /**
     * 未知
     */
    UN_KNOW(1000_0002, "未知"),

    /**
     * 内部系统接口调用异常
     */
    INNER_INVOKE_ERROR(1000_0003, "内部系统接口调用异常"),

    /**
     * 外部系统接口调用异常
     */
    OUTER_INVOKE_ERROR(1000_0004, "外部系统接口调用异常"),

    /**
     * 该接口禁止访问
     */
    FORBID_VISIT(1000_0005, "该接口禁止访问"),

    /**
     * 接口地址无效
     */
    ADDRESS_INVALID(1000_0006, "接口地址无效"),

    /**
     * 接口请求超时
     */
    REQUEST_TIMEOUT(1000_0007, "接口请求超时"),

    /**
     * 参数无效
     */
    PARAM_IS_INVALID(1000_0501, "参数无效"),

    /**
     * 参数为空
     */
    PARAM_IS_BLANK(1000_0502, "参数为空"),

    /**
     * 参数长度过长
     */
    PARAM_LENGTH_OVER(1000_0503, "参数长度过长"),

    /**
     * 输入日期格式不对
     */
    IN_VALIDATE_DATE_STRING(1000_0504, "输入日期格式不对"),

    /**
     * 用户未登录
     */
    USER_NOT_LOGIN(1000_1001, "用户未登录"),

    /**
     * 账号不存在或密码错误
     */
    USER_LOGIN_ERROR(1000_1002, "账号不存在或密码错误"),

    /**
     * 账号已被禁用
     */
    USER_ACCOUNT_FORBIDDEN(1000_1003, "账号已被禁用"),

    /**
     * 用户不存在
     */
    USER_NOT_EXIST(1000_1004, "用户不存在"),

    /**
     * 凭证已存在
     */
    USER_LOGIN_CREDENTIAL_EXISTED(1000_1005, "凭证已存在"),

    /**
     * 登陆令牌为空
     */
    USER_LOGIN_TOKEN_EMPTY(1000_1006, "登陆令牌为空"),

    /**
     * 令牌已过期
     */
    USER_LOGIN_TOKEN_TIMEOUT(1000_1007, "令牌已过期"),

    /**
     * 该令牌无效
     */
    TOKEN_ERROR(1000_1008, "该令牌无效"),

    /**
     * 没有访问该资源的权限
     */
    USER_NO_PERMISSION(1000_1009, "没有访问该资源的权限"),

    /**
     * 没有访问{0}资源的权限
     */
    USER_NO_PERMISSION_FORMAT(1000_1010, "没有访问{0}资源的权限"),

    /**
     * 数据不存在
     */
    DATA_NOT_FOUND(1000_2001, "数据不存在"),

    /**
     * 数据有误
     */
    DATA_IS_WRONG(1000_2002, "数据有误"),

    /**
     * 数据更新出错
     */
    DATA_UPDATE_WRONG(1000_2003, "数据更新出错"),

    /**
     * 数据已存在
     */
    DATA_ALREADY_EXISTED(1000_2004, "数据已存在"),

    /**
     * 序列化失败
     */
    DATA_SERIALIZE_ERROR(1000_2005, "序列化失败"),

    /**
     * 反序列化失败
     */
    DATA_UN_SERIALIZE_ERROR(1000_2006, "反序列化失败"),

    /**
     * 文件上传失败
     */
    UPLOAD_FILE_ERROR(1000_3001, "文件上传失败"),

    /**
     * 文件类型错误
     */
    FILE_TYPE_ERROR(1000_3002, "文件类型错误"),

    /**
     * 文件导入失败
     */
    FILE_IMPORT_ERROR(1000_3003, "文件导入失败"),

    SUCCESS(200,"成功"),
    FAIL(201, "失败"),
    SERVICE_ERROR(2012, "服务异常"),

    PAY_RUN(205, "支付中"),

    LOGIN_AUTH(208, "未登陆"),
    PERMISSION(209, "没有权限"),
    SECKILL_NO_START(210, "秒杀还没开始"),
    SECKILL_RUN(211, "正在排队中"),
    SECKILL_NO_PAY_ORDER(212, "您有未支付的订单"),
    SECKILL_FINISH(213, "已售罄"),
    SECKILL_END(214, "秒杀已结束"),
    SECKILL_SUCCESS(215, "抢单成功"),
    SECKILL_FAIL(216, "抢单失败"),
    SECKILL_ILLEGAL(217, "请求不合法"),
    SECKILL_ORDER_SUCCESS(218, "下单成功"),
    COUPON_GET(220, "优惠券已经领取"),
    COUPON_LIMIT_GET(221, "优惠券已发放完毕");

    /**
     * Code
     */
    private final Integer code;

    /**
     * msg
     */
    private final String msg;

}
